//
//  HHNavigationController.swift
//  HHWeibo
//
//  Created by hehuafeng on 2017/2/14.
//  Copyright © 2017年 雷厉峰行. All rights reserved.
//

import UIKit

class HHNavigationController: UINavigationController {
    
    override func viewDidLoad() {
        // 1. 隐藏导航栏
        navigationBar.isHidden = true
    }

    // MARK: 拦截push方法
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        // 1. 当子控制器不是栈底控制器时, 隐藏tabbar
        if childViewControllers.count > 0 {
            viewController.hidesBottomBarWhenPushed = true
            
            // 2. 判断要跳转的控制器是否为子控制器
            if let vc = viewController as? HHBaseViewController {
                // 3. 返回按钮文字
                // 这种形式, 只是简单创建的title变量, 并没有赋值
                // 所以, 在跳到更深层次的子控制器时, 左边按钮将没有文字可以显示
//                var title = String()
                var title = "返回"
                
                // 4. 如果为第一层, 则导航栏标题为控制器名称
                if childViewControllers.count == 1 {
                    title = childViewControllers.first?.title ?? "返回"
                }
                
                // 5. 设置导航返回按钮
                vc.navItem.leftBarButtonItem = UIBarButtonItem(title: title, normalColor: UIColor.darkGray, highlightedColor: UIColor.orange, target: self, action: #selector(goBack), isBack: true)
            }
        }
        
        // 6. 跳转
        super.pushViewController(viewController, animated: true)
    }
    
    /// 返回方法
    //  注意: 返回时不要使用navigationController去调用
    @objc private func goBack() {
//         _ = navigationController?.popViewController(animated: true)
        popViewController(animated: true)
    }

}
